package com.szrt.java.day20170109.demo02;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.junit.Test;

/**
 * 正常使用List的缺点
 * 
 * 1：有编译警告(不是错误，也就是收不做任何处理可以得到正确的结果) 对于强迫症患者来说，就是一个噩梦      解决！
 * 2：正常情况下 我们加的元素一般来说都是同类的。但List默认什么都可以加。                                                解决！
 * 3：拿出来的东西默认是 Object
 * 
 * 如何解决?
 * 答：使用泛型
 * 
 * 泛型：制定具体的一个范围 制定一个具体的类型(不符合类型的不要),例：找女朋友，温柔的，可爱的，小鸟依人
 * 
 * 语法 <具体的类型> 类型：类/接口
 * 
 */

public class ArrayListTest {

	@Test
	public void add(){
		
		//1：创建这个ArrayList类的对象  调用其构造方法
		List<String> list = new ArrayList<String>();
		
		list.add("加菲猫A");
		list.add(new String ("加菲猫B"));  //两种写法相同
		list.add("哮天犬");
		list.add("手机"); //手机不应该放入宠物商店中
		
		String b = (String) list.get(1);
		System.out.println(b);
		
		int size = list.size();
		System.out.println("删除前，集合的长度："+size);
		
		//删除1个元素 element
		list.remove(3);
		int sizeAfter = list.size();
		System.out.println("删除后，集合的长度："+sizeAfter);
		
		//遍历
		System.out.println("修改之前-----------------");
		for(int i =0;i<sizeAfter;i++){
			String pet = list.get(i);
		    System.out.println(pet);
		}
		
		//修改 把"加菲猫A" 修改为 " 修改为 "加菲猫AA"
		list.set(0, "加菲猫AA");
		System.out.println("修改之后-----------------");
		for(int i =0;i<sizeAfter;i++){
			String str = list.get(i);
		    System.out.println(str);
		}
	}
	
	@Test
	public void findAll(){
		
		//1：创建这个ArrayList类的对象  调用其构造方法
		List<String> list = new ArrayList<String>();
		
		list.add("加菲猫A");
		list.add(new String ("加菲猫B"));  //两种写法相同
		list.add("哮天犬");
		list.add("手机"); 
		
		int size = list.size();
		
		System.out.println("第1种方式遍历-----------------");
		for(int i =0;i<size;i++){
			String str = list.get(i);
		    System.out.println(str);
		}
		
		System.out.println("第2种方式遍历-----------------");
		for(String str:list){
			System.out.println(str);
		}
		
		System.out.println("第3种方式遍历-----------------");
		// Iterator<String> 表示迭代器中放置的类型都是String
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String str = it.next();
			System.out.println(str);
		}
		
	}
	
}
